package com.itheima;

import com.example.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Import;


//最优雅的方案, 就是使用自定义注解, 在封装一层
@EnableHeaderConfig  // 封装@Import, 等价于@Import(MyImportSelector.class)

//为了避免配置类的导入也需要写数组, 所以直接导入ImportSelector的实现类
//@Import(MyImportSelector.class)

//@Import(HeaderConfig.class)  // 导入配置类
//@Import({HeaderGenerator.class, HeaderParser.class}) // 导入普通类
@Slf4j
//@ComponentScan({"com.example","com.itheima"}) // 会打破默认的扫描路径, 默认扫描启动类所在包及其子包, 需要一并声明
@SpringBootApplication // 等价与下面的三个注解
//--------------------------------------------------------------------
/*
@SpringBootConfiguration
    等价于@Configuration--用来声明配置类
@EnableAutoConfiguration :开启自动配置
    @Import({AutoConfigurationImportSelector.class})
@ComponentScan : 扫描组件的注解, 默认扫描启动类所在的包及其子包

*/
//这个也是一个配置类
public class SpringbootWebConfigApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringbootWebConfigApplication.class, args);
    }


    // 需求: 将第三方类交给IOC容器管理
    // 不推荐, 启动类(引导类), 就应该让他单一责任原则
    //@Bean // 作用: 程序启动时, 会执行的方法,, 并将方法返回值对象交给IOC容器管理
    //public SAXReader saxReader(){
    //log.info("创建SAXReader对象...");
    //return new SAXReader();
    //}

}
